

% last_u(?L, ?U)

last_u([X], X).
last_u([_|L], U) :- last_u(L,U).


ap([],X, [X]).
ap([H|T], Y, [H|Z]) :- ap(T, Y, Z).


last_2(L, X) :- ap(_, X, L).

reverse_a([X], [X]).
reverse_a([X|H], L) :-reverse_a(H, N), ap(N, X, L).

maxLista([X], X).
maxLista([X|L], Y) :- maxLista(L,Y), X =< Y.
maxLista([X|L], X) :- maxLista(L,Y), X > Y.

minLista([X], X).
minLista([X|L], Y) :- minLista(L,Y), X >= Y.
minLista([X|L], X) :- minLista(L,Y), X < Y.



